const validator = {
    template(reg, msg, value, callback) {
        if (!value) {
            return;
        }
        if (reg.test(value)) {
            callback();
        } else {
            return callback(new Error(msg));
        }
    },
    isChinese(rule, value, callback) {
        validator.template(/^[\u4e00-\u9fa5]*$/g, '必须为中文', value, callback);
    },
    isAlphaNumber(rule, value, callback) {
        validator.template(/^[A-Za-z0-9]*$/g, '必须为数字或字母', value, callback);
    },
    isAlpha(rule, value, callback) {
        validator.template(/^[A-Za-z]*$/g, '必须字母', value, callback);
    },
    isIP(rule, value, callback) {
        validator.template(/(\d+)\.(\d+)\.(\d+)\.(\d+)/g, '请输入正确的ip地址', value, callback);
    },
    isNumber(rule, value, callback) {
        validator.template(/^[0-9]*$/g, '只能输入数字', value, callback);
    },
    isWord(rule, value, callback) {
        validator.template(/^\w*$/g, '字母、数字、下划线', value, callback);
    },
    isUserName(rule, value, callback) {
        if (value) {
            validator.template(/^[a-zA-Z][a-zA-Z0-9_]*$/g, '字母开头，字母、数字、下划线组成', value, callback);
            return;
        }
        callback();
    },
    isMobilePhone(rule, value, callback) {
        if (value) {
            validator.template(/^1([34578])\d{9}$/, '移动电话', value, callback);
            return;
        }
        callback();
    },
    isEmail(rule, value, callback) {
        if (value) {
            validator.template(/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/g, '邮箱', value, callback);
            return;
        }
        callback();
    },
    isMaterialName(rule, value, callback) {
        //中文，或 字母 或数字 或 下划线
        validator.template(/^[\u4e00-\u9fa5\w]*$/g, '中文,字母,数字,下划线', value, callback);
    },
    isReleaseVersion(rule, value, callback) {
        validator.template(/^[\w.]*$/g, '中文,字母,数字,下划线,小数点', value, callback);
    }
};


export default validator
